package auth_dao

import (
	"admin-system/internal/models/auth_model"
	"context"
	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
	"log/slog"
)

type RoleDao struct {
	db *gorm.DB
}

func NewRoleDao(db *gorm.DB) *RoleDao {
	return &RoleDao{db: db}
}

// GetUserAllRoles 获取用户角色
// 查询用户角色
func (rm *RoleDao) GetUserAllRoles(c *gin.Context) (roles *auth_model.Role, err error) {
	db := rm.db.WithContext(c).Order("id asc")
	if err = db.Find(&roles).Error; err != nil {
		return nil, err
	}
	return roles, nil
}

// GetRoleByID 根据角色ID获取角色信息
// @description 根据角色ID获取角色信息(角色管理使用)
func (rm *RoleDao) GetRoleByID(ctx context.Context, roleId int64) (*auth_model.Role, error) {
	var role auth_model.Role
	if err := rm.db.WithContext(ctx).First(&role, roleId).Error; err != nil {
		slog.Any("角色不存在", err)
		return nil, err
	}
	return &role, nil
}
